package com.augurit.gzcgwsp.wfex.common.util;

import java.io.IOException;
import java.net.ConnectException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;
import org.springframework.context.ApplicationContext;
import org.springside.modules.utils.SpringContextHolder;

import com.augurit.common.system.service.auth.ILoginUserService;
import com.augurit.common.util.ReflectionUtils;
import com.augurit.common.util.lang.DateUtils;
import com.augurit.common.util.lang.StringUtils;
import com.augurit.gzcgwsp.commonex.util.lang.DateUtilsEX;
import com.augurit.gzcgwsp.csshlj.form.ShljYsForm;
import com.augurit.gzcgwsp.csshlj.web.form.CsshljCzForm;
import com.augurit.gzcgwsp.hwgz.web.form.YwHwShSqbForm;
import com.augurit.gzcgwsp.jzfqwczz.web.form.YwYnJzfqwczcJbxxForm;
import com.augurit.gzcgwsp.jzfqwczzpfsn.web.form.YwYnJzfqwczzPfsnForm;
import com.augurit.gzcgwsp.jzfqwczzxn.web.form.YwYnJzfqwczzXnForm;
import com.augurit.gzcgwsp.printDoc.service.IYwPrintDocService;
import com.augurit.gzcgwsp.printDoc.web.form.YwPrintDocForm;
import com.augurit.gzcgwsp.qyzz.web.form.YwRqQyzzInfoForm;
import com.augurit.gzcgwsp.rqqyjyxk.entity.YwRqQyjyxk;
import com.augurit.gzcgwsp.rqqyjyxk.service.IYwRqQyjyxkService;
import com.augurit.gzcgwsp.rqqyjyxk.web.form.YwRqQyjyxkForm;
import com.augurit.gzcgwsp.sendNotice.entity.YwSphjInfo;
import com.augurit.gzcgwsp.sendNotice.entity.YwZhengwuInfo;
import com.augurit.gzcgwsp.sendNotice.service.IYwSphjInfoService;
import com.augurit.gzcgwsp.sendNotice.service.IYwZhengwuInfoService;
import com.augurit.gzcgwsp.smartformCsdlwj.web.form.CsdlwjForm;
import com.augurit.gzcgwsp.smartformCsdlwj.web.form.DlzyForm;
import com.augurit.gzcgwsp.smartformCsdlwj.web.form.GgcsForm;
import com.augurit.gzcgwsp.smartformCsdlwj.web.form.ShljqsForm;
import com.augurit.gzcgwsp.ssgd.web.form.YwRqSsgdSqbForm;
import com.augurit.gzcgwsp.ssylb.entity.YwRqRqssylb;
import com.augurit.gzcgwsp.wfex.app.doc.IOaDocCodeServiceEX;
import com.augurit.gzcgwsp.wfex.bi.service.IWfTemplateAttachmentRefServiceEX;
import com.augurit.gzcgwsp.wfex.common.service.IWfServiceEX;
import com.augurit.gzcgwsp.ywcmn.service.IYwComQyxxService;
import com.augurit.gzcgwsp.ywcmn.service.IYwComSjclService;
import com.augurit.gzcgwsp.ywcmn.service.IYwComSjcllistService;
import com.augurit.gzcgwsp.ywcmn.web.form.YwComSjclForm;
import com.augurit.gzcgwsp.ywcmn.web.form.YwComSjcllistForm;
import com.augurit.wf.bi.web.form.WfBusInstanceTaskForm;
import com.augurit.wf.common.constant.WfConstant;
import com.augurit.wf.common.util.WfUtils;

public class WfUtilsEX extends WfUtils{
    private static final Log log=LogFactory.getLog(WfUtilsEX.class);
    
    static Locale locale = Locale.getDefault(); 
    static ResourceBundle localResource = ResourceBundle.getBundle("interfaceExchange", locale); 
	
	private static final String sourceNode = localResource.getString("SourceNode");//源节点
	private static final String destinationNode = localResource.getString("DestinationNode");//目标节点
    
    /**
     * 通用打印表单
     */
    public static String wfBusPrint(Object busFormObj,Long id,String activName) throws Exception{
        try{
            Map<String, String> variables=buildMap(busFormObj,"yyyy年MM月dd日");
            String fileCode=variables.get("fileCode");
            String templateCode=variables.get("templateCode");
            if("sjtzs".equals(fileCode)||("qusjtzs").equals(fileCode)&& "cksa".equals(activName)){
            	ApplicationContext ctx = SpringContextHolder.getApplicationContext();
            	IYwPrintDocService printService=(IYwPrintDocService) ctx.getBean("ywPrintDocServiceImpl");	
            	String acceptNo="";
            	if(templateCode.contains("qx")){
            		acceptNo=variables.get("acceptNo");
            		//表示区
            		acceptNo=printService.updateQuAcceptNo(templateCode, String.valueOf(id),acceptNo);
            	}else{
            		 acceptNo=printService.updateAcceptNo(templateCode, String.valueOf(id));
            	}
        		if(StringUtils.isNotBlank(acceptNo)){
             		variables.put("acceptNo", acceptNo);
             		variables.put("serialNo", acceptNo);
             		variables.put("acceptNo1", acceptNo);
             		variables.put("serialNo1", acceptNo);
             		variables.put("acceptNo2", acceptNo);
             		variables.put("acceptNo3", acceptNo);
             		variables.put("serialNo2", acceptNo);
             	}
            }
            ServletActionContext.getRequest().setAttribute(WfConstant.PRINT_BUFFER, variables);
        }
        catch(Exception e){
            e.printStackTrace();
        }
        return WfConstant.PRINT;
    }
    
    /**
     * 将form的值转换为map
     * @param busFormObj
     * @return
     */
    public  static Map<String, String> buildMap(Object busFormObj,String dateFormat){
        Map<String, String> variables = new HashMap<String, String>();
        String[] fields = ReflectionUtils.getFieldArray(busFormObj.getClass());
        String[] parentFields = null;
        if(!busFormObj.getClass().getSuperclass().getSimpleName().equals("Object")){
            parentFields = ReflectionUtils.getFieldArray(busFormObj.getClass().getSuperclass());
        }
        List<String> allFields = new ArrayList<String>();
        allFields.addAll(Arrays.asList(fields));
        if(parentFields != null){
            allFields.addAll(Arrays.asList(parentFields));
        }
        for(String field : allFields){
            Object value = ReflectionUtils.invokeGetterMethod(busFormObj, field);
            if(value != null){
                if(value instanceof Timestamp || value instanceof Date){
                    Date date = (Date)value;
                    variables.put(field, DateUtils.dateTimeToString(date, dateFormat));
                }
                else{
                      if("null".equals(value.toString()) || value.toString()==null)
                          variables.put(field,"");
                      else {                    	 
                    	  variables.put(field, value.toString().replace("null", ""));
                      }
                }
            }
            else
                variables.put(field, "");            
        }
        for(Map.Entry<String,String> entry:variables.entrySet()){
//          log.info(entry.getKey()+": "+entry.getValue());    
        }
        
        return variables;
    }
    
    
    /**
     * 打印表单构造map
     * @param busFormObj
     * @param list
     * @return
     * @throws Exception
     */
    public static String wfBusSmartFormPrint(Object busFormObj,List list) throws Exception{
        try{
            Map<String, String> variables=buildMap(busFormObj,"yyyy年MM月dd日");
           if(list!=null && list.size()>0){
        		   Map map=(Map) list.get(0);
                   Iterator it=map.entrySet().iterator();
                   while(it.hasNext()){
                	   Map.Entry entrys=(Map.Entry)it.next();
                	   String key=(String) entrys.getKey();
                	   String value=(String) entrys.getValue();
                	   key=key.toLowerCase();
//                       log.info(key+"----->"+value);
                       if(value!=null){
                    	   //if(!variables.containsKey(key)){
                    		   variables.put(key, value);
                    	   //}
                       }
               }
           }
//           variables = getSjtzsField(variables);
            ServletActionContext.getRequest().setAttribute(WfConstant.PRINT_BUFFER, variables);
        }
        catch(Exception e){
        	e.printStackTrace();
           log.error("表单自定义生成文书错误"+e);
        }
        return WfConstant.PRINT;
    }
    
    /**
     * 设置收件通知书里面的字段
     * @param variables
     * @return
     */
    public static Map<String, String> getSjtzsField(Map<String, String> variables){
    	Iterator it=variables.entrySet().iterator();
        while(it.hasNext()){
     	   Map.Entry entrys=(Map.Entry)it.next();
     	   String key=(String) entrys.getKey();
     	   String value=(String) entrys.getValue();
     	   key=key.toLowerCase();
     	   if("frdb".equals(key)){
     		  variables.put("frdb2", value);
     	   }
     	   if("cbyw".equals(key)){
     		  variables.put("cbyw2", value);
     		  variables.put("cbyw3", value);
     		  variables.put("cbyw4", value);
     	   }
     	   if("acceptNo".equals(key)){
    		  variables.put("acceptNo2", value);
     	   }
     	   if("tbrq".equals(key)){
     		  variables.put("curDate2", value);
     		  variables.put("curDate3", value);
     		  variables.put("tbrq2", value);
     	   }
     	   if("sjr".equals(key)){
     		  variables.put("sjr2", value);
     	   }
     	  if("sajg".equals(key)){
     		  variables.put("sajg2", value);
     	   }
    }
	    return variables;
    }
    
    public static Map<String,String> getSphjdmAndSphjdmmc(String link){
    	Map<String,String> sphjdmAndSphjdmmcMap = new HashMap<String,String>();
    	String SPHJDM="";//审批环节代码  本审批环节对应的环节代码，由委局自定义本系统的环节代码。根据映射关系映射到标准环境
		String SPHJDMMC = "";
    	if("001".equals(link)){//受理
			log.info("当前环节==受理");
			SPHJDM="001";
			SPHJDMMC = "受理";
		}else if("002".equals(link)){//承办
			log.info("当前环节==承办");
			SPHJDM="002";
			SPHJDMMC = "承办";
		}else if("003".equals(link)){//审核
			log.info("当前环节==审核");
			SPHJDM="003";
			SPHJDMMC = "审核";
		}else if("004".equals(link)){//审批
			log.info("当前环节==审批");
			SPHJDM="004";
			SPHJDMMC = "审批";
		}else if("005".equals(link)){//办结
			log.info("当前环节==办结");
			SPHJDM="005";
			SPHJDMMC = "办结";
		}else if("006".equals(link)){//办结
			log.info("当前环节==办事结果");
			SPHJDM="006";
			SPHJDMMC = "办事结果";
		}
    	sphjdmAndSphjdmmcMap.put("SPHJDM", SPHJDM);
    	sphjdmAndSphjdmmcMap.put("SPHJDMMC", SPHJDMMC);
    	return sphjdmAndSphjdmmcMap;
    }
	
	public static void SendCompositeMessage(int stype,String status,Object obj,String handlecomments,Date handlecommentstime,String loginusername,boolean iswb,
			WfBusInstanceTaskForm instance,String durationExpression,String link,IYwZhengwuInfoService ywZhengwuInfoService,
			IYwComSjcllistService ywComSjcllistService,IYwComSjclService ywComSjclService ,String sprzwdm,String sprzwmc,IYwPrintDocService ywPrintDocService,
			IYwComQyxxService ywComQyxxService,IOaDocCodeServiceEX oaDocCodeServiceEX,IWfTemplateAttachmentRefServiceEX wfTemplateAttachmentRefServiceEX,Map<String,String> map){
		String SPHJDM = getSphjdmAndSphjdmmc(link).get("SPHJDM");//审批环节代码  本审批环节对应的环节代码，由委局自定义本系统的环节代码。根据映射关系映射到标准环境
		String SPHJDMMC = getSphjdmAndSphjdmmc(link).get("SPHJDMMC");
		
		YwZhengwuInfo ywZhengwuInfo = new YwZhengwuInfo();
		try{
			log.info("handlecommentstime=="+handlecommentstime);
			log.info("数据交换接口调用参数=="+stype+";"+status+";"+loginusername);
			//读取接口配置信息
			
			String FLGDGXD = localResource.getString("flgdgxd");//法律规定管辖地
			String FSYWGXD = localResource.getString("fsywgxd");//发生业务管辖地
			ywZhengwuInfo.setFlgdgxd(FLGDGXD);
			ywZhengwuInfo.setFsywgxd(FSYWGXD);
			ywZhengwuInfo.setSprzwdm(sprzwdm);
			ywZhengwuInfo.setSprzwmc(sprzwmc);
			log.info(ywZhengwuInfo.getSprzwdm()+"----Sprzwdm");
			log.info(ywZhengwuInfo.getSprzwmc()+"----Sprzwmc");

//			String sjly = "0";//收件来源 1位   0表示大厅  1表示网办
			String tjfs = "0";//提交方式
			if(iswb){
//				sjly = "1";
				tjfs = "1";
			}
			
			//获取流程时间
			String[] totalTimeTemp = durationExpression.split(" ");
			int totalTime = Integer.parseInt(totalTimeTemp[0]);
			log.info("工作日----------------------->>"+totalTime);												
			
			if("001".equals(link)){//发送受理
				ywZhengwuInfo.setSourceNode(sourceNode);    	
				ywZhengwuInfo.setDestinationNode(destinationNode); //SPHJDM
				ywZhengwuInfo.setSphjdm(SPHJDM);//审批环节名称
				ywZhengwuInfo.setSphjdmmc(SPHJDMMC);//审批环节代码  本审批环节对应的环节代码，由委局自定义本系统的环节代码。根据映射关系映射到标准环境
				ywZhengwuInfo.setSjbbh("1");//数据版本号
				ywZhengwuInfo.setGdblsx(totalTime);//按法律、法规规定的办理此项审批事项的时限
				ywZhengwuInfo.setGdblsxdw("Z");//规定办理时限的单位  G – 工作日,  Z – 自然日
				ywZhengwuInfo.setGdsf("0");//按法律、法规规定的收费情况。
				ywZhengwuInfo.setSljgzzjgdm("007482989");//受理机关组织机构代码
				ywZhengwuInfo.setSljgmc("广州市城市管理委员会");//受理机关名称
				ywZhengwuInfo.setSldwcbrxm(loginusername);//受理单位办理人姓名      注：因为这个字段只有
				ywZhengwuInfo.setSlsj(new Date());//受理时间
				ywZhengwuInfo.setSlyf("0");//受理与否   0 – 受理,1 – 不受理
				ywZhengwuInfo.setTjfs(tjfs);//提交方式 0 – 窗口提交,1 – 网上提交,2 – 信函,3 – 电报,4 – 电传,5 – 传真,6 – 邮件,7 – 电子数据交换,8 – 其它

				ywZhengwuInfo.setSpbzh("0");
				Long qyid =null;
				
    	        if(stype==0){
    				YwRqSsgdSqbForm objTemp = (YwRqSsgdSqbForm) Class.forName("com.augurit.gzcgwsp.ssgd.web.form.YwRqSsgdSqbForm").newInstance();
    			    objTemp=(YwRqSsgdSqbForm)obj;
    			    qyid = objTemp.getQyid();
					ywZhengwuInfo.setSerialNo(objTemp.getSerialNo()); 
					ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getSqdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getYwlxr());//申请单位经办人姓名  
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSqdwlxdh(objTemp.getYwlxrtel());//设置经办人 电话
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
        		   
    	        }else if(stype==1){
    		    	YwRqQyzzInfoForm objTemp = (YwRqQyzzInfoForm) Class.forName("com.augurit.gzcgwsp.qyzz.web.form.YwRqQyzzInfoForm").newInstance();
    			    objTemp=(YwRqQyzzInfoForm)obj;
    			    qyid = objTemp.getQyid();
					ywZhengwuInfo.setSerialNo(objTemp.getSerialNo()); 
					ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getSqdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getYwlxr());//申请单位经办人姓名  
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSqdwlxdh(objTemp.getYwlxrtel());//设置经办人 电话
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==2){
    				YwHwShSqbForm objTemp = (YwHwShSqbForm) Class.forName("com.augurit.gzcgwsp.hwgz.web.form.YwHwShSqbForm").newInstance();
    			    objTemp=(YwHwShSqbForm)obj;
    			    qyid = objTemp.getQyid();
					ywZhengwuInfo.setSerialNo(objTemp.getSerialNo()); 
					ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getSqdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getYwlxr());//申请单位经办人姓名
    			    ywZhengwuInfo.setSqdwlxdh(objTemp.getYwlxrtel());//设置经办人 电话
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==3){
            		YwRqQyjyxkForm objTemp = (YwRqQyjyxkForm) Class.forName("com.augurit.gzcgwsp.rqqyjyxk.web.form.YwRqQyjyxkForm").newInstance();
    			    objTemp=(YwRqQyjyxkForm)obj;
    			    qyid = objTemp.getQyid();
					ywZhengwuInfo.setSerialNo(objTemp.getSerialNo()); 
					ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getSqdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getYwlxr());//申请单位经办人姓名  
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSqdwlxdh(objTemp.getYwlxrtel());//设置经办人 电话
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号    			    
            	}else if(stype==4){
            		DlzyForm objTemp = (DlzyForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.DlzyForm").newInstance();
    			    objTemp=(DlzyForm)obj;
//    			    qyid = objTemp.getQyid();
					ywZhengwuInfo.setSerialNo(objTemp.getSerialNo()); 
					ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getSqdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getLxr());//申请单位经办人姓名  
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    if(StringUtils.isNotBlank(objTemp.getSqdwTel())){
    			    	ywZhengwuInfo.setSqdwlxdh(objTemp.getSqdwTel());//设置经办人 电话
    			    }    			    
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==5){
            		CsdlwjForm objTemp = (CsdlwjForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.CsdlwjForm").newInstance();
    			    objTemp=(CsdlwjForm)obj;
//    			    qyid = objTemp.getQyid();
					ywZhengwuInfo.setSerialNo(objTemp.getSerialNo()); 
					ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getJsdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getLxr());//申请单位经办人姓名  
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    if(StringUtils.isNotBlank(objTemp.getJsdwTel())){
    			    	ywZhengwuInfo.setSqdwlxdh(objTemp.getJsdwTel());//设置经办人 电话
    			    } 
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==6){
            		GgcsForm objTemp = (GgcsForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.GgcsForm").newInstance();
    			    objTemp=(GgcsForm)obj;
//    			    qyid = objTemp.getQyid();
					ywZhengwuInfo.setSerialNo(objTemp.getSerialNo()); 
					ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getSqdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getWtr());//申请单位经办人姓名  
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    if(StringUtils.isNotBlank(objTemp.getSqrTel())){
    			    	ywZhengwuInfo.setSqdwlxdh(objTemp.getSqrTel());//设置经办人 电话
    			    } 
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==7){
            		ShljqsForm objTemp = (ShljqsForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.ShljqsForm").newInstance();
    			    objTemp=(ShljqsForm)obj;
//    			    qyid = objTemp.getQyid();
					ywZhengwuInfo.setSerialNo(objTemp.getSerialNo()); 
					ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getSqdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getSqdw());//申请单位经办人姓名
    			    ywZhengwuInfo.setSqdwlxdh(objTemp.getLxdh()==null?"空":objTemp.getLxdh());//设置经办人 电话
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==8){
            		ShljYsForm objTemp = (ShljYsForm) Class.forName("com.augurit.gzcgwsp.csshlj.form.ShljYsForm").newInstance();
    			    objTemp=(ShljYsForm)obj;
//    			    qyid = objTemp.getQyid();
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
			    	 ywZhengwuInfo.setSqdwjbrxm(objTemp.getSqdw());//申请单位经办人姓名
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getQymc());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getWtdlr()==null?"空":objTemp.getWtdlr());//申请单位经办人姓名  
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setSqdwlxdh(objTemp.getLxdh()==null?"空":objTemp.getLxdh());//设置经办人 电话
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==9){
            		CsshljCzForm objTemp = (CsshljCzForm) Class.forName("com.augurit.gzcgwsp.csshlj.web.form.CsshljCzForm").newInstance();
    			    objTemp=(CsshljCzForm)obj;
//    			    qyid = objTemp.getQyid();
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getQymc());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getWtsfj()==null?"空":objTemp.getWtsfj());//申请单位经办人姓名
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
    			    if(StringUtils.isNotBlank(objTemp.getLxdh())){
    			    	ywZhengwuInfo.setSqdwlxdh(objTemp.getLxdh());//设置经办人 电话
    			    } 
            	}else if(stype==12){
            		YwYnJzfqwczzPfsnForm objTemp = (YwYnJzfqwczzPfsnForm) Class.forName("com.augurit.gzcgwsp.jzfqwczzpfsn.web.form.YwYnJzfqwczzPfsnForm").newInstance();
    			    objTemp=(YwYnJzfqwczzPfsnForm)obj;
    			    qyid = objTemp.getQyid();
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getSqdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getJsdwLxr());//申请单位经办人姓名  
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSqdwlxdh(objTemp.getJsdwLxrLxdh());//设置经办人 电话
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
    			    
            	}else if(stype==13){
            		YwYnJzfqwczzXnForm objTemp = (YwYnJzfqwczzXnForm) Class.forName("com.augurit.gzcgwsp.jzfqwczzxn.web.form.YwYnJzfqwczzXnForm").newInstance();
    			    objTemp=(YwYnJzfqwczzXnForm)obj;
    			    qyid = objTemp.getQyid();
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getSqdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getJsdwLxr());//申请单位经办人姓名  
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSqdwlxdh(objTemp.getJsdwLxrLxdh());//设置经办人 电话
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
    			    
            	}else if(stype==14){
            		YwYnJzfqwczcJbxxForm objTemp = (YwYnJzfqwczcJbxxForm) Class.forName("com.augurit.gzcgwsp.jzfqwczz.web.form.YwYnJzfqwczcJbxxForm").newInstance();
    			    objTemp=(YwYnJzfqwczcJbxxForm)obj;
    			    qyid = objTemp.getQyid();
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setSqdwhsqrxm(objTemp.getSqdw());//申请单位或申请人名称
    			    ywZhengwuInfo.setSqdwjbrxm(objTemp.getYwlxr());//申请单位经办人姓名  
    			    ywZhengwuInfo.setHzbh(objTemp.getAcceptNo());//回执编号   此受理业务回执的编号，按《行政许可法》规定必须要有回执。可以是统一查询号。
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSqdwlxdh(objTemp.getYwlxrtel());//设置经办人 电话
    			    ywZhengwuInfo.setSpsxmc(objTemp.getCbyw());//审批事项名称
    			    ywZhengwuInfo.setXmmc(objTemp.getCbyw());  //申请审批的项目的具体名称。
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
    			    
            	}
    	        
    	        String slzlqd = getSlzlqd( Long.parseLong(instance.getMasterEntityKey()),instance.getTemplateCode(),ywComSjcllistService,ywComSjclService);
				ywZhengwuInfo.setSlzlqd(StringUtils.isBlank(slzlqd)?"空":slzlqd);//受理资料清单
			}else if("002".equals(link) || "003".equals(link) || "004".equals(link) ){//发送承办、审核、审批
				ywZhengwuInfo.setSourceNode(sourceNode);    	
				ywZhengwuInfo.setDestinationNode(destinationNode);
				ywZhengwuInfo.setSjbbh("1");//数据版本号  默认为1
				//审批步骤号   审批的步骤号，第一个审批的步骤号为1，后面的步骤号以2、3、4…每次加1 的方式
				if("002".equals(link)){
					ywZhengwuInfo.setSpbzh("1");
				}else if("003".equals(link)){
					ywZhengwuInfo.setSpbzh("2");
				}else if("004".equals(link)){
					ywZhengwuInfo.setSpbzh("3");
				}
				ywZhengwuInfo.setSphjdm(SPHJDM);//审批环节代码
				ywZhengwuInfo.setSphjdmmc(SPHJDMMC);//审批环节名称   审批环节代码对应的名称
				ywZhengwuInfo.setSprxm(loginusername);//审批人姓名  
				ywZhengwuInfo.setSpyj(StringUtils.isBlank(handlecomments)?"无":handlecomments);//审批意见
				ywZhengwuInfo.setSpsj(new Date());//审批时间  YYYY-MM-DD hh24:mi:ss 
				
                if(stype==0){
    				YwRqSsgdSqbForm objTemp = (YwRqSsgdSqbForm) Class.forName("com.augurit.gzcgwsp.ssgd.web.form.YwRqSsgdSqbForm").newInstance();
    			    objTemp=(YwRqSsgdSqbForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword()); 			    

    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
    	        }else if(stype==1){
    		    	YwRqQyzzInfoForm objTemp = (YwRqQyzzInfoForm) Class.forName("com.augurit.gzcgwsp.qyzz.web.form.YwRqQyzzInfoForm").newInstance();
    			    objTemp=(YwRqQyzzInfoForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword()); 			    

    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==2){
    				YwHwShSqbForm objTemp = (YwHwShSqbForm) Class.forName("com.augurit.gzcgwsp.hwgz.web.form.YwHwShSqbForm").newInstance();
    			    objTemp=(YwHwShSqbForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());  			    

    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==3){
            		YwRqQyjyxkForm objTemp = (YwRqQyjyxkForm) Class.forName("com.augurit.gzcgwsp.rqqyjyxk.web.form.YwRqQyjyxkForm").newInstance();
    			    objTemp=(YwRqQyjyxkForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword()); 			    

    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==4){
            		DlzyForm objTemp = (DlzyForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.DlzyForm").newInstance();
    			    objTemp=(DlzyForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==5){
            		CsdlwjForm objTemp = (CsdlwjForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.CsdlwjForm").newInstance();
    			    objTemp=(CsdlwjForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==6){
            		GgcsForm objTemp = (GgcsForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.GgcsForm").newInstance();
    			    objTemp=(GgcsForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==7){
            		ShljqsForm objTemp = (ShljqsForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.ShljqsForm").newInstance();
    			    objTemp=(ShljqsForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==8){
            		ShljYsForm objTemp = (ShljYsForm) Class.forName("com.augurit.gzcgwsp.csshlj.form.ShljYsForm").newInstance();
    			    objTemp=(ShljYsForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==9){
            		CsshljCzForm objTemp = (CsshljCzForm) Class.forName("com.augurit.gzcgwsp.csshlj.web.form.CsshljCzForm").newInstance();
    			    objTemp=(CsshljCzForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==12){
            		YwYnJzfqwczzPfsnForm objTemp = (YwYnJzfqwczzPfsnForm) Class.forName("com.augurit.gzcgwsp.jzfqwczzpfsn.web.form.YwYnJzfqwczzPfsnForm").newInstance();
    			    objTemp=(YwYnJzfqwczzPfsnForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==13){
            		YwYnJzfqwczzXnForm objTemp = (YwYnJzfqwczzXnForm) Class.forName("com.augurit.gzcgwsp.jzfqwczzxn.web.form.YwYnJzfqwczzXnForm").newInstance();
    			    objTemp=(YwYnJzfqwczzXnForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword()); 			    

    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==14){
    			    YwYnJzfqwczcJbxxForm objTemp = (YwYnJzfqwczcJbxxForm) Class.forName("com.augurit.gzcgwsp.jzfqwczz.web.form.YwYnJzfqwczcJbxxForm").newInstance();
    			    objTemp=(YwYnJzfqwczcJbxxForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());			    

    				ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    				ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}
			}else if("005".equals(link)){//发送办结
				ywZhengwuInfo.setSourceNode(sourceNode);
				ywZhengwuInfo.setDestinationNode(destinationNode);
				ywZhengwuInfo.setSphjdm(SPHJDM);//审批环节名称
				ywZhengwuInfo.setSphjdmmc(SPHJDMMC);//审批环节代码  本审批环节对应的环节代码，由委局自定义本系统的环节代码。根据映射关系映射到标准环境
				ywZhengwuInfo.setSjbbh("1");//数据版本号
				ywZhengwuInfo.setBjjgzzjgdm("007482989");//办结机关组织机构代码
				ywZhengwuInfo.setBjjgmc("广州市城市管理委员会");//办结机关名称
				ywZhengwuInfo.setBjsj(new Date());//办结时间  YYYY-MM-DD hh24:mi:ss
				ywZhengwuInfo.setSfje("0");//收费金额  收费的金额，保留小数点后2位。不收费填0
				ywZhengwuInfo.setJedwdm("CNY");//金额单位代码  金额单位的代码。详细列表参见附件《国际标准货币代码表》。
				ywZhengwuInfo.setSpbzh("4");				
				Map<String,String> bljgAndBljgmsMap = getBljgAndBljgms(instance.getTemplateCode(),instance.getMasterEntityKey(),ywPrintDocService);
				String bljgms = bljgAndBljgmsMap.get("bljgms");
				String bljg = bljgAndBljgmsMap.get("bljg");				
				ywZhengwuInfo.setBjjg(bljg);//办结结果  0 – 出证办结（正常产生证照、批文的办结）,1 – 退回办结（退回或驳回申请的办结）,2 – 作废办结（指业务处理上无效的纪录）,3 – 删除办结（指录入错误、操作错误等技术上的无效纪录）,4 – 转报办结（指转报其他单位或上级单位的办结情况）,5 – 补交不来办结（指出现补交告知时，通知之后，申请人长期不来补交材料的办结,6 – 办结（除以上所述情况外的办结
				ywZhengwuInfo.setBljgms(bljgms);//办理结果描述		    	
                if(stype==0){
    				YwRqSsgdSqbForm objTemp = (YwRqSsgdSqbForm) Class.forName("com.augurit.gzcgwsp.ssgd.web.form.YwRqSsgdSqbForm").newInstance();
    			    objTemp=(YwRqSsgdSqbForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
    	        }else if(stype==1){
    		    	YwRqQyzzInfoForm objTemp = (YwRqQyzzInfoForm) Class.forName("com.augurit.gzcgwsp.qyzz.web.form.YwRqQyzzInfoForm").newInstance();
    			    objTemp=(YwRqQyzzInfoForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==2){
    				YwHwShSqbForm objTemp = (YwHwShSqbForm) Class.forName("com.augurit.gzcgwsp.hwgz.web.form.YwHwShSqbForm").newInstance();
    			    objTemp=(YwHwShSqbForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==3){
            		YwRqQyjyxkForm objTemp = (YwRqQyjyxkForm) Class.forName("com.augurit.gzcgwsp.rqqyjyxk.web.form.YwRqQyjyxkForm").newInstance();
    			    objTemp=(YwRqQyjyxkForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==4){
            		DlzyForm objTemp = (DlzyForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.DlzyForm").newInstance();
    			    objTemp=(DlzyForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==5){
            		CsdlwjForm objTemp = (CsdlwjForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.CsdlwjForm").newInstance();
    			    objTemp=(CsdlwjForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==6){
            		GgcsForm objTemp = (GgcsForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.GgcsForm").newInstance();
    			    objTemp=(GgcsForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==7){
            		ShljqsForm objTemp = (ShljqsForm) Class.forName("com.augurit.gzcgwsp.smartformCsdlwj.web.form.ShljqsForm").newInstance();
    			    objTemp=(ShljqsForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==8){
            		ShljYsForm objTemp = (ShljYsForm) Class.forName("com.augurit.gzcgwsp.csshlj.form.ShljYsForm").newInstance();
    			    objTemp=(ShljYsForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==9){
            		CsshljCzForm objTemp = (CsshljCzForm) Class.forName("com.augurit.gzcgwsp.csshlj.web.form.CsshljCzForm").newInstance();
    			    objTemp=(CsshljCzForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==12){
            		YwYnJzfqwczzPfsnForm objTemp = (YwYnJzfqwczzPfsnForm) Class.forName("com.augurit.gzcgwsp.jzfqwczzpfsn.web.form.YwYnJzfqwczzPfsnForm").newInstance();
    			    objTemp=(YwYnJzfqwczzPfsnForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==13){
            		YwYnJzfqwczzXnForm objTemp = (YwYnJzfqwczzXnForm) Class.forName("com.augurit.gzcgwsp.jzfqwczzxn.web.form.YwYnJzfqwczzXnForm").newInstance();
    			    objTemp=(YwYnJzfqwczzXnForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}else if(stype==14){
    			    YwYnJzfqwczcJbxxForm objTemp = (YwYnJzfqwczcJbxxForm) Class.forName("com.augurit.gzcgwsp.jzfqwczz.web.form.YwYnJzfqwczcJbxxForm").newInstance();
    			    objTemp=(YwYnJzfqwczcJbxxForm)obj;
    			    ywZhengwuInfo.setSerialNo(objTemp.getSerialNo());
			    	ywZhengwuInfo.setPassword(objTemp.getPassword());
    			    ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
    			    ywZhengwuInfo.setSxbm(objTemp.getSxbm());//委局业务系统事项编号
            	}
			}else if("006".equals(link)){

				//发送办结结果
				ywZhengwuInfo.setSourceNode(sourceNode);
				ywZhengwuInfo.setDestinationNode(destinationNode);
				ywZhengwuInfo.setSphjdm(SPHJDM);//审批环节名称
				ywZhengwuInfo.setSphjdmmc(SPHJDMMC);//审批环节代码  本审批环节对应的环节代码，由委局自定义本系统的环节代码。根据映射关系映射到标准环境
				ywZhengwuInfo.setSjbbh("1");//数据版本号
				ywZhengwuInfo.setBjjgzzjgdm("007482989");//办结机关组织机构代码
				ywZhengwuInfo.setBjjgmc("广州市城市管理委员会");//办结机关名称
				ywZhengwuInfo.setSpbzh("5");
				String serialNo=(String) map.get("serialNo");
				String password=(String) map.get("password");
				if(StringUtils.isBlank(serialNo)){
					serialNo=(String) map.get("acceptNo");
				}
				  ywZhengwuInfo.setSerialNo(serialNo);
			      ywZhengwuInfo.setPassword(password);
			      ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
  			    ywZhengwuInfo.setSxbm((String)map.get("sxbm"));//委局业务系统事项编号
				String templateCode = instance.getTemplateCode();
				String masterEntityKey = instance.getMasterEntityKey();
				setBsjgInfo(ywZhengwuInfo,ywPrintDocService,templateCode,masterEntityKey,map);
				    			    
    			ywZhengwuInfo.setYxtywlsh(instance.getMasterEntityKey());//原系统业务流水号
                if(StringUtils.isEmpty(ywZhengwuInfo.getFfjglx())){//没有文书，则设置为2
                	ywZhengwuInfo.setFfjglx("2");//发放结果类型代码： 0 –证照（默认） 1 –批文  2 –其他
                }
                if(StringUtils.isEmpty(ywZhengwuInfo.getSqqydz())){//企业地址
                	ywZhengwuInfo.setSqqydz("无");//如果为空，则填无
                }
			}			
		}catch(Exception e){
            e.printStackTrace();
        }	
		ywZhengwuInfo.setProduceDate(new Date());
		ywZhengwuInfoService.save(ywZhengwuInfo);
	}
	
	/**
	 * 特别程序开始（目前有延期和公示） 设置公共部分 之后保存
	 * @param serialNo  统一查询编号
	 * @param password  统一查询密码
	 * @param sxbm  事项编码
	 * @param ywId  业务流水号
	 * @param tbcxpzr  特别程序批准人
	 * @param gsEndDate 公示的结束时间  为空则不是公示
	 * @param ywZhengwuInfoService
	 */
	public static void tbcxStart(String serialNo,String password,String sxbm,String ywId,
			String tbcxpzr,String templateCode,IYwZhengwuInfoService ywZhengwuInfoService,
			IYwSphjInfoService ywSphjInfoService,IWfServiceEX wfServiceEX,Map<String,String> map,Date gsEndDate){
		int yqts = wfServiceEX.getBusNum1(serialNo);
		YwZhengwuInfo ywZhengwuInfo = new YwZhengwuInfo();
		ywZhengwuInfo.setSourceNode(sourceNode);
		ywZhengwuInfo.setDestinationNode(destinationNode);
		ywZhengwuInfo.setSerialNo(serialNo);
		ywZhengwuInfo.setPassword(password);
		ywZhengwuInfo.setSjbbh("1");//数据的版本号，默认为1，如果报送数据后数据发生改变需要重报的，以2、3、4…每次加1的方式填写版本号，务必谨慎使用
		ywZhengwuInfo.setSxbm(sxbm);//委办局业务系统事项编号
		ywZhengwuInfo.setYxtywlsh(ywId);
		ywZhengwuInfo.setSqnr("空");//申请内容
		ywZhengwuInfo.setProduceDate(new Date());
		
		ywZhengwuInfo.setTbcxpzr(tbcxpzr);//特别程序批准人
		ywZhengwuInfo.setTbcxksrq(new Date());//特别程序开始日期
		ywZhengwuInfo.setTbcxsx(String.valueOf(yqts));
		if (yqts==0){
			if(map.get("yqts")!=null)
			yqts=Integer.valueOf((String)map.get("yqts"));
		}
		if(yqts > 0){
			if(yqts > 10){//如果大于10天就进入B类
				ywZhengwuInfo.setTbcxzl("B");//特别程序的种类： b – 除了延长审批以为的其他的种类
				ywZhengwuInfo.setTbcxzlmc("上报审批");//特别程序种类名称，填写上栏列举延长审批、专家鉴定、听证等，不在上列范围时可自行扩展，自行扩展的都按B类处理，即在“特别程序种类”中填写B。
			}else{
				ywZhengwuInfo.setTbcxzl("A");//特别程序的种类： A – 延长审批
				ywZhengwuInfo.setTbcxzlmc("延长审批");//特别程序种类名称
			}
		}else{
			ywZhengwuInfo.setTbcxzl("A");//特别程序的种类： A – 延长审批
		}
		
		ywZhengwuInfo.setTbcxsx(yqts+"");
		YwSphjInfo ywSphjInfo = ywSphjInfoService.getYwSphjInfo(ywId, templateCode);
		ywSphjInfo.setMasterEntityKey(ywId);
		ywSphjInfo.setTemplateCode(templateCode);
		
		log.info("ywSphjInfo.getIsYanqiStart() ================ "+ywSphjInfo.getIsYanqiStart());
		
		setAndSaveTbcxStartYwZhengwuInfo(yqts, map, serialNo, password, sxbm, ywId, ywSphjInfo, templateCode, ywZhengwuInfoService, ywZhengwuInfo, gsEndDate, ywSphjInfoService, wfServiceEX);
	}
	
	/**
	 * 保存特别程序开始数据
	 * @param yqts
	 * @param map
	 * @param serialNo
	 * @param password
	 * @param sxbm
	 * @param ywId
	 * @param ywSphjInfo
	 * @param templateCode
	 * @param ywZhengwuInfoService
	 * @param ywZhengwuInfo
	 * @param gsEndDate
	 * @param ywSphjInfoService
	 * @param wfServiceEX
	 */
	public static void setAndSaveTbcxStartYwZhengwuInfo(int yqts,Map<String,String> map,String serialNo,String password,String sxbm,String ywId,YwSphjInfo ywSphjInfo,
			String templateCode,IYwZhengwuInfoService ywZhengwuInfoService,YwZhengwuInfo ywZhengwuInfo,Date gsEndDate,
			IYwSphjInfoService ywSphjInfoService,IWfServiceEX wfServiceEX){
		boolean flag = false;
		if(gsEndDate == null){//endDate 公示的结束时间  为空则延期
			ywZhengwuInfo.setSphjdm("007");
			ywZhengwuInfo.setSphjdmmc("延期开始");			
			if(yqts > 0 && (StringUtils.isBlank(ywSphjInfo.getIsYanqiStart()) || !ywSphjInfo.getIsYanqiStart().equals("yes"))){
				flag = true;
				if((StringUtils.isBlank(ywSphjInfo.getIsGsStart()) || !ywSphjInfo.getIsGsStart().equals("yes"))){
					ywZhengwuInfo.setXh("1");//特别程序申请的序号，第一个特别程序申请的序号1，后面的序号以2、3、4…每次加1 的方式报序
				}else{
					ywZhengwuInfo.setXh("2");//特别程序申请的序号，第一个特别程序申请的序号1，后面的序号以2、3、4…每次加1 的方式报序
				}				
				if(StringUtils.isNotBlank((String)map.get("yqly"))){
					ywZhengwuInfo.setTbcxqdlyhyj((String)map.get("yqly"));//特别程序启动理由或依据
				}else{
					ywZhengwuInfo.setTbcxqdlyhyj("空");//特别程序启动理由或依据
				}
				ywSphjInfo.setIsYanqiStart("yes");
			}
		}else{//公示
			ywZhengwuInfo.setSphjdm("011");
			ywZhengwuInfo.setSphjdmmc("公示开始");
			if((StringUtils.isBlank(ywSphjInfo.getIsGsStart()) || !ywSphjInfo.getIsGsStart().equals("yes"))){
				flag = true;
				ywZhengwuInfo.setXh("1");//特别程序申请的序号，第一个特别程序申请的序号1，后面的序号以2、3、4…每次加1 的方式报序
				ywZhengwuInfo.setTbcxqdlyhyj("案件公示");//特别程序启动理由或依据
				ywSphjInfo.setIsGsStart("yes");
			}
		}
		if(flag){
			ywZhengwuInfoService.save(ywZhengwuInfo);
			ywSphjInfoService.saveOrUpdateYwSphjInfo(ywSphjInfo);
			//生成特别程序结束数据
			tbcxEnd(serialNo, password, sxbm, ywId, templateCode, yqts, ywZhengwuInfoService, ywSphjInfoService, wfServiceEX,gsEndDate);
		}
	}
	
	/**
	 * 特别程序结束（目前有延期和公示）  设置公共部分 之后保存
	 * @param serialNo  统一查询编号
	 * @param password  统一查询密码
	 * @param sxbm  事项编码
	 * @param ywId  业务流水号
	 * @param templateCode 业务编码
	 * @param yqts 延期天数
	 * @param endDate 公示的结束时间  为空则不是公示
	 * @param ywSphjInfoService
	 * @param workdayHolidayService
	 * @param ywZhengwuInfoService
	 */
	public static void tbcxEnd(String serialNo,String password,String sxbm,String ywId,String templateCode,int yqts,
			IYwZhengwuInfoService ywZhengwuInfoService,IYwSphjInfoService ywSphjInfoService,IWfServiceEX wfServiceEX,Date gsEndDate){
		
		YwZhengwuInfo ywZhengwuInfo = new YwZhengwuInfo();
		ywZhengwuInfo.setSourceNode(sourceNode);
		ywZhengwuInfo.setDestinationNode(destinationNode);
		ywZhengwuInfo.setSerialNo(serialNo);
		ywZhengwuInfo.setPassword(password);
		ywZhengwuInfo.setSjbbh("1");//数据的版本号，默认为1，如果报送数据后数据发生改变需要重报的，以2、3、4…每次加1的方式填写版本号，务必谨慎使用
		ywZhengwuInfo.setSxbm(sxbm);//委办局业务系统事项编号
		ywZhengwuInfo.setYxtywlsh(ywId);//原系统业务流水号		
		ywZhengwuInfo.setTbcxsfje("0");//特别程序收费金额
		ywZhengwuInfo.setProduceDate(new Date());
		
		YwSphjInfo ywSphjInfo = ywSphjInfoService.getYwSphjInfo(ywId, templateCode);
		ywSphjInfo.setMasterEntityKey(ywId);
		ywSphjInfo.setTemplateCode(templateCode);
		
		setAndSaveTbcxEndYwZhengwuInfo(yqts, ywSphjInfo, ywZhengwuInfoService, ywZhengwuInfo, gsEndDate, ywSphjInfoService, wfServiceEX);
	}
	
	/**
	 * 保存特别程序结束数据
	 * @param yqts
	 * @param ywSphjInfo
	 * @param ywZhengwuInfoService
	 * @param ywZhengwuInfo
	 * @param gsEndDate
	 * @param ywSphjInfoService
	 * @param wfServiceEX
	 */
	public static void setAndSaveTbcxEndYwZhengwuInfo(int yqts,YwSphjInfo ywSphjInfo,IYwZhengwuInfoService ywZhengwuInfoService,
			YwZhengwuInfo ywZhengwuInfo,Date gsEndDate,IYwSphjInfoService ywSphjInfoService,IWfServiceEX wfServiceEX){
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		boolean flag = false;
		Date endDate = null;
		if(gsEndDate == null){//endDate 公示的结束时间  为空则延期
			if(yqts > 0 && (StringUtils.isBlank(ywSphjInfo.getIsYanqiEnd()) || !ywSphjInfo.getIsYanqiEnd().equals("yes"))){
				flag = true;
				if((StringUtils.isBlank(ywSphjInfo.getIsGsStart()) || !ywSphjInfo.getIsGsStart().equals("yes"))){
					ywZhengwuInfo.setXh("1");//特别程序申请的序号，第一个特别程序申请的序号1，后面的序号以2、3、4…每次加1 的方式报序
				}else{
					ywZhengwuInfo.setXh("2");//特别程序申请的序号，第一个特别程序申请的序号1，后面的序号以2、3、4…每次加1 的方式报序
				}
				
				endDate = wfServiceEX.calculateDueDate(new Date(), yqts);
				ywZhengwuInfo.setSphjdm("008");
				ywZhengwuInfo.setSphjdmmc("延期结束");
				ywZhengwuInfo.setIsSended("延期结束时间"+sf.format(endDate));
				ywZhengwuInfo.setTbcxjg("延期结束");//特别程序结果
				ywSphjInfo.setIsYanqiEnd("yes");
			}			
		}else{//公示
			if((StringUtils.isBlank(ywSphjInfo.getIsGsEnd()) || !ywSphjInfo.getIsGsEnd().equals("yes"))){
				flag = true;
				ywZhengwuInfo.setXh("1");//特别程序申请的序号，第一个特别程序申请的序号1，后面的序号以2、3、4…每次加1 的方式报序
				endDate = gsEndDate;
				ywZhengwuInfo.setSphjdm("012");
				ywZhengwuInfo.setSphjdmmc("公示结束");
				ywZhengwuInfo.setIsSended("公示结束时间"+sf.format(endDate));
				ywZhengwuInfo.setTbcxjg("公示结束");//特别程序结果
				ywSphjInfo.setIsGsEnd("yes");
			}
		}
		
		if(flag){			
			ywZhengwuInfo.setYqEndDate(endDate);
			ywZhengwuInfo.setJgcsrq(endDate);//结果产生日期
			ywZhengwuInfo.setTbcxjsrq(endDate);//特别程序结束日期
			ywZhengwuInfoService.save(ywZhengwuInfo);
			
			ywSphjInfoService.saveOrUpdateYwSphjInfo(ywSphjInfo);
		}
	}
	
	/**
	 * 网上申报
	 * @param serialNo
	 * @param password
	 * @param sxbm
	 * @param ywId
	 * @param templateCode
	 * @param cbyw
	 * @param sqrhsqdw
	 * @param lxdh
	 * @param ywZhengwuInfoService
	 * @param ywSphjInfoService
	 */
	public static void wssb(String serialNo,String password,String sxbm,String ywId,String templateCode,String cbyw,
			String sqrhsqdw,String lxr,String lxdh,Date wstjsj,IYwZhengwuInfoService ywZhengwuInfoService,IYwSphjInfoService ywSphjInfoService){
		YwZhengwuInfo ywZhengwuInfo = new YwZhengwuInfo();
		ywZhengwuInfo.setSourceNode(sourceNode);
		ywZhengwuInfo.setDestinationNode(destinationNode);
		ywZhengwuInfo.setSerialNo(serialNo);
		ywZhengwuInfo.setPassword(password);
		ywZhengwuInfo.setSjbbh("1");//数据的版本号，默认为1，如果报送数据后数据发生改变需要重报[误操作或数据修改]的，以2、3、4…每次加1的方式填写版本号，务必谨慎使用。
		ywZhengwuInfo.setSxbm(sxbm);
		ywZhengwuInfo.setYxtywlsh(ywId);//本业务在原有业务系统中的业务流水号，对于同一审批事项必须是唯一的。
		ywZhengwuInfo.setSpsxmc(StringUtils.isBlank(cbyw)?"空":cbyw);//本审批事项的名称，假如审批事项有子项，指审批事项子项名称。
		ywZhengwuInfo.setSqrhsqdw(StringUtils.isBlank(sqrhsqdw)?"空":sqrhsqdw);//网上申请人或申请单位的名称。
		ywZhengwuInfo.setSqrxm(StringUtils.isBlank(lxr)?"空":lxr);//网上申请人的真实姓名，非注册网名。
		ywZhengwuInfo.setSqrsj(StringUtils.isBlank(lxdh)?"空":lxdh);//申请人留下的手机号码，不可填成电话。手机和电话不可同时为空。
		ywZhengwuInfo.setSqrdh(StringUtils.isBlank(lxdh)?"空":lxdh);//电话号码。手机和电话不可同时为空。
		ywZhengwuInfo.setWstjsj(wstjsj == null?new Date():wstjsj);//用户第一次网上提交时间。
		ywZhengwuInfo.setWstxclqd("基本信息表");//用户在网上填写了什么表格的名称。
		ywZhengwuInfo.setHzbh(serialNo);//网上给申请人查询的回执编号。可以是统一查询号。
		ywZhengwuInfo.setProduceDate(new Date());
		
		YwSphjInfo ywSphjInfo = ywSphjInfoService.getYwSphjInfo(ywId, templateCode);
		ywSphjInfo.setMasterEntityKey(ywId);
		ywSphjInfo.setTemplateCode(templateCode);
		if((StringUtils.isBlank(ywSphjInfo.getIsWssb()) || !ywSphjInfo.getIsWssb().equals("yes"))){
			ywZhengwuInfo.setSphjdm("000");
			ywZhengwuInfo.setSphjdmmc("网上申报");
			ywZhengwuInfoService.save(ywZhengwuInfo);	
			
			ywSphjInfo.setIsWssb("yes");
			ywSphjInfoService.saveOrUpdateYwSphjInfo(ywSphjInfo);
		}
	}
	
	/**
	 * 设置办事结果的信息
	 * @param ywZhengwuInfo
	 * @param templateCode
	 * @param masterEntityKey
	 */
	public  static YwZhengwuInfo setBsjgInfo(YwZhengwuInfo ywZhengwuInfo,IYwPrintDocService ywPrintDocService,
			String templateCode, String masterEntityKey,Map map) {
		String zsbh=(String) map.get("zsbh");
		String sqdw=(String)map.get("sqdw");
		String address=(String)map.get("address");
		System.out.println("address = "+address);
		ywZhengwuInfo.setSqqydz(StringUtils.isBlank(address)?"空":address);
		ywZhengwuInfo.setSqqymc(sqdw);
		List<YwPrintDocForm> pList = ywPrintDocService.getFile(templateCode, Long.parseLong(masterEntityKey),"zyxzxkjds");//.getNoFcode(templateCode, Long.parseLong(masterEntityKey));
		ywZhengwuInfo.setFfjglx("0");//先全部设置成证照，如果是文书就会后面会每个重新设置
		if(templateCode.contains("rqjyxkz")){//燃气经营,比较特殊
			setInfoByJyxk(pList, sqdw, templateCode, zsbh, ywPrintDocService, ywZhengwuInfo, masterEntityKey);
		}else if ("rqrsqjazwxqyzz".equals(templateCode)) {//企业资质
			if(StringUtils.isNotBlank(zsbh)){
				ywZhengwuInfo.setZjhpwmc("建筑业企业资质证书");
				ywZhengwuInfo.setZjhpwbh(zsbh);
			}else{
				setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
			}
		}else if("rqssgd".equals(templateCode)){//设施改动
			    ywZhengwuInfo.setSqqymc((String)map.get("sqdw"));
			    ywZhengwuInfo.setSqqydz((String)map.get("address"));
			if(pList != null && pList.size()>0){
				//预留有效期，以后加入有效期
				setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
			}else{
				setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
			}
		}else if("hwggshsqb".equals(templateCode)){//户外广告	
			String zzzh=(String) map.get("szzh");
			if(StringUtils.isNotBlank(zzzh)){
				String yxqx="至"+(String)map.get("endyear")+"年"+(String)map.get("endmonth")+"月"
	            +(String)map.get("endday")+"日";
				ywZhengwuInfo.setZjhpwmc("户外广告设置许可证");
				ywZhengwuInfo.setZjhpwbh("穗城管委户外广设字["+DateUtilsEX.getCurYear()+zzzh+"]号");
				ywZhengwuInfo.setZjhpwyxqx(yxqx);
			}else{
				setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
			}
		}else if("csdllszysp".equals(templateCode)){//城市道路人行道及相关公共场地临时占用审批 
			 ywZhengwuInfo.setSqqydz((String)map.get("sqdwAddress"));
			String bh=(String) map.get("curSeq");
			if(StringUtils.isNotBlank(bh)){
				bh="市"+DateUtilsEX.getCurYear()+bh;
				ywZhengwuInfo.setZjhpwbh(bh);
				ywZhengwuInfo.setZjhpwmc("城市道路人行道及相关公共场地临时占用许可证");
				String yxqx="至"+(String)map.get("zysjqssj");
				ywZhengwuInfo.setZjhpwyxqx(yxqx);
			}else{
				setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
			}
		}else if("csdlwj".equals(templateCode)){//城市道路挖掘
			ywZhengwuInfo.setSqqymc((String)map.get("jsdw"));
			ywZhengwuInfo.setSqqydz((String)map.get("jsdwAddress"));
			String bh=(String) map.get("curSeq");
			if(StringUtils.isNotBlank(bh)){
			bh="市"+DateUtilsEX.getCurYear()+bh;
			ywZhengwuInfo.setZjhpwbh(bh);
			ywZhengwuInfo.setZjhpwmc("城市道路人行道及相关公共场地挖掘许可证");
			//以后填上道路挖掘的时间
			//String yxqx=(String)map.get("zysjqssj")+"至"+(String)map.get("zysjqssj");
			//ywZhengwuInfo.setZjhpwyxqx(yxqx);
			}else{
				setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
			}
					
		}else if("shljcz".equals(templateCode)){//从事城市生活垃圾经营性处置服务许可审批
			String fzh=(String)map.get("fzh");
			if(StringUtils.isNotBlank(fzh)){
				ywZhengwuInfo.setZjhpwmc("城市生活垃圾经营性处置服务许可证");
				String fzhm="粤建环证I"+fzh;
				ywZhengwuInfo.setZjhpwbh(fzhm);
				String yxqx="至"+(String)map.get("jysjestr");
				ywZhengwuInfo.setZjhpwyxqx(yxqx);
			}else{
				setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
			}
		}else if("ccgbggcs".equals(templateCode)){//公厕
			 ywZhengwuInfo.setSqqymc((String)map.get("gcmc"));
			 ywZhengwuInfo.setSqqydz((String)map.get("gcAddress"));
			setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
		}else if(templateCode.contains("jzfqwczzpf")||templateCode.contains("jzfqwczzxn")){//余泥处 排放  新增、变更、延期
			String zsno=(String) map.get("zsno");
			String type=(String) map.get("fz");
			if("1".equals(type)){
				ywZhengwuInfo.setZjhpwmc("处置证");
			}else if("2".equals(type)){
				ywZhengwuInfo.setFfjglx("1");
				ywZhengwuInfo.setZjhpwmc("临时余泥渣土排放复函");
			}
			String ysgsWgrq=(String)map.get("ysgsWgrq");
			String  yxqx="至"+ysgsWgrq;
			if(StringUtils.isNotBlank(zsno)){
				ywZhengwuInfo.setZjhpwbh(zsno);
				ywZhengwuInfo.setZjhpwyxqx(yxqx);
			}
			
		}else if(templateCode.contains("jzljczz")){//余泥处 建筑废弃物处置证(运输)==>  新增发证、年审续证、变更换证、损坏换证、遗失补办
			String bh=(String)map.get("certificateNo");
			if(StringUtils.isNotBlank(bh)){
				ywZhengwuInfo.setZjhpwmc("建筑废弃物处置证(运输)处置证");
				ywZhengwuInfo.setZjhpwbh(bh);
				String yxqx="至"+(String)map.get("validEndtime");
				ywZhengwuInfo.setZjhpwyxqx(yxqx);
			}else{
				setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
			}
		}
		
		return ywZhengwuInfo;
	}
	
	
	/**
	 * 经营许可设置信息
	 */
	private static void setInfoByJyxk(List<YwPrintDocForm> pList,String sqdw,String templateCode,String zsbh,
			IYwPrintDocService ywPrintDocService,YwZhengwuInfo ywZhengwuInfo ,String masterEntityKey){
		ApplicationContext ctx = SpringContextHolder.getApplicationContext();
		IYwRqQyjyxkService jyxkService=(IYwRqQyjyxkService) ctx.getBean("ywRqQyjyxkServiceImpl");			
		List<YwRqQyjyxk> list=jyxkService.getEntityBySqdw(sqdw);
			String jyxknum="";
			if(list.size()>1){//以前有过审批
				for(YwRqQyjyxk jyxk:list){
					String zsnum=jyxk.getZsbh();
					if(StringUtils.isNotBlank(zsnum)){
						jyxknum=zsnum;
						break;
					}
				}
				if(StringUtils.isNotBlank(jyxknum)){//以前有过执照
					List<YwRqRqssylb> ssylbs=jyxkService.findSsylbs(Long.valueOf(masterEntityKey));
					setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
					if(ssylbs.size()>0){//有效期传设施标识的有效期，前提是准予许可
						if(pList != null && pList.size()>0){
							String yxqx="至"+ssylbs.get(0).getValiddate();
							ywZhengwuInfo.setZjhpwyxqx(yxqx);
						}
					}
				}else{//说明没有通过许可
					setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
				}
			}else{//第一次审批
				if(StringUtils.isNotBlank(zsbh)){//审批通过
					ywZhengwuInfo.setFfjglx("0");
					ywZhengwuInfo.setZjhpwmc("燃气经营许可证");
					ywZhengwuInfo.setZjhpwbh("粤建燃证字"+zsbh+"号");
					YwRqQyjyxk jyxk=list.get(0);
					String yxqx="至"+jyxk.getEndyear()+"年"+jyxk.getEndmonth()+"月"+jyxk.getEndday()+"日";//有效期
					ywZhengwuInfo.setZjhpwyxqx(yxqx);
				}else{
					setDocFileInfo(ywZhengwuInfo, ywPrintDocService, templateCode, masterEntityKey);
				}
		 }	
	   
	}
	
//	/**
//	 * 延期结束
//	 * @param serialNo  统一查询编号
//	 * @param password  统一查询密码
//	 * @param sxbm  事项编码
//	 * @param ywId  业务流水号
//	 * @param ywZhengwuInfoService
//	 */
//	public static void yanQiEnd(String serialNo,String password,String sxbm,String ywId,String templateCode,IYwZhengwuInfoService ywZhengwuInfoService,IYwSphjInfoService ywSphjInfoService){
//		YwSphjInfo ywSphjInfo = ywSphjInfoService.getYwSphjInfo(ywId, templateCode);
//		if(StringUtils.isBlank(ywSphjInfo.getIsYanqiEnd()) || !ywSphjInfo.getIsYanqiEnd().equals("yes")){
//			YwZhengwuInfo ywZhengwuInfo = new YwZhengwuInfo();
//			ywZhengwuInfo.setSourceNode(sourceNode);
//			ywZhengwuInfo.setDestinationNode(destinationNode);
//			ywZhengwuInfo.setSerialNo(serialNo);
//			ywZhengwuInfo.setPassword(password);
//			ywZhengwuInfo.setSjbbh("1");//数据的版本号，默认为1，如果报送数据后数据发生改变需要重报的，以2、3、4…每次加1的方式填写版本号，务必谨慎使用
//			ywZhengwuInfo.setXh("1");//特别程序申请的序号，第一个特别程序申请的序号1，后面的序号以2、3、4…每次加1 的方式报序
//			ywZhengwuInfo.setSxbm(sxbm);//委办局业务系统事项编号
//			ywZhengwuInfo.setYxtywlsh(ywId);//原系统业务流水号
//			ywZhengwuInfo.setTbcxjg("空");//特别程序结果
//			ywZhengwuInfo.setJgcsrq(new Date());//结果产生日期
//			ywZhengwuInfo.setTbcxjsrq(new Date());//特别程序结束日期
//			ywZhengwuInfo.setTbcxsfje("0");//特别程序收费金额
//			ywZhengwuInfo.setProduceDate(new Date());
//			ywZhengwuInfo.setSphjdm("008");
//			ywZhengwuInfo.setSphjdmmc("延期结束");
//			ywZhengwuInfoService.save(ywZhengwuInfo);
//			
//			ywSphjInfo.setIsYanqiEnd("yes");
//			ywSphjInfo.setMasterEntityKey(ywId);
//			ywSphjInfo.setTemplateCode(templateCode);
//			ywSphjInfoService.saveOrUpdateYwSphjInfo(ywSphjInfo);
//		}
//	}
	/**
	 * 获取制文的信息
	 * @return
	 */
	private static void setDocFileInfo(YwZhengwuInfo ywZhengwuInfo,IYwPrintDocService ywPrintDocService,String templateCode,String masterEntityKey){
		String bh="";
		List<YwPrintDocForm> pList = ywPrintDocService.getFile(templateCode, Long.parseLong(masterEntityKey),"zyxzxkjds");//.getNoFcode(templateCode, Long.parseLong(masterEntityKey));
		if(pList!=null && pList.size()>0){
			YwPrintDocForm printDoc =pList.get(0);
			bh =printDoc.getFileNum();
			ywZhengwuInfo.setZjhpwbh(bh == null?"空":bh.toString());
			ywZhengwuInfo.setZjhpwmc("准予行政许可决定书");
	    	ywZhengwuInfo.setFfsj(printDoc.getCreatDate());
	    	ywZhengwuInfo.setFfjglx("1");
	    	log.info("准予行政许可决定书");
		}else{
			List<YwPrintDocForm> docs = ywPrintDocService.getFile(templateCode, Long.parseLong(masterEntityKey),"byxkjds");//.getNoFcode(templateCode, Long.parseLong(masterEntityKey));
			if(docs!=null && docs.size()>0){
				YwPrintDocForm printDoc =docs.get(0);
				bh = printDoc.getFileNum();//oaDocCodeServiceEX.getCurSeqAndAddSeq(templateCode, "byxkjds", Long.parseLong(masterEntityKey));
				ywZhengwuInfo.setZjhpwbh(bh == null?"空":bh.toString());
				ywZhengwuInfo.setZjhpwmc("不予行政许可决定书");
				ywZhengwuInfo.setFfsj(printDoc.getCreatDate());
				ywZhengwuInfo.setFfjglx("1");
		    	log.info("不予行政许可决定书");
			}else{
				List<YwPrintDocForm> bzdocs = ywPrintDocService.getFile(templateCode, Long.parseLong(masterEntityKey),"bzcltzs");//.getNoFcode(templateCode, Long.parseLong(masterEntityKey));
				if(bzdocs!=null && bzdocs.size()>0){
					YwPrintDocForm printDoc =bzdocs.get(0);
					bh =printDoc.getFileNum();// oaDocCodeServiceEX.getCurSeqAndAddSeq(templateCode, "bzcltzs", Long.parseLong(masterEntityKey));
					ywZhengwuInfo.setZjhpwbh(bh == null?"空":bh.toString());
					ywZhengwuInfo.setZjhpwmc("行政许可补正材料通知书");
					ywZhengwuInfo.setFfsj(printDoc.getCreatDate());
					ywZhengwuInfo.setFfjglx("1");
			    	log.info("行政许可补正材料通知书");
				}else{
					List<YwPrintDocForm> bysldocs = ywPrintDocService.getFile(templateCode, Long.parseLong(masterEntityKey),"bysljds");//.getNoFcode(templateCode, Long.parseLong(masterEntityKey));
					if(bysldocs!=null && bysldocs.size()>0){
						YwPrintDocForm printDoc =bysldocs.get(0);
						bh =printDoc.getFileNum();// oaDocCodeServiceEX.getCurSeqAndAddSeq(templateCode, "bzcltzs", Long.parseLong(masterEntityKey));
						ywZhengwuInfo.setZjhpwbh(bh == null?"空":bh.toString());
						ywZhengwuInfo.setZjhpwmc("行政许可不予受理决定书");
						ywZhengwuInfo.setFfsj(printDoc.getCreatDate());
						ywZhengwuInfo.setFfjglx("1");
				    	log.info("行政许可不予受理决定书");
					}else{
						ywZhengwuInfo.setZjhpwbh("空");
						ywZhengwuInfo.setZjhpwmc("空");
					}
				}
			}
		}	   
		
	}
	
	/**
	 * 获取受理资料清单
	 * @param ajId
	 * @param templateCode
	 * @param ywComSjcllistService
	 * @param ywComSjclService
	 * @return
	 */
	public static String getSlzlqd(Long ajId,String templateCode,IYwComSjcllistService ywComSjcllistService,IYwComSjclService ywComSjclService){
		String slzlqd = "资料清单：";
		YwComSjcllistForm sjclListForm=new YwComSjcllistForm();
		sjclListForm.setAjid(ajId);
		sjclListForm.setTplcode(templateCode);
        List<YwComSjcllistForm> sjclList = ywComSjcllistService.getList(sjclListForm);
        YwComSjclForm fkForm = new YwComSjclForm();	        
        fkForm.setAjid(ajId);
        fkForm.setTplcode(templateCode);
        List<YwComSjclForm> sjclTpl = ywComSjclService.getList(fkForm);
        Boolean first = true;
        Map<String, Integer> slclMap =new HashMap<String, Integer>();
        for (YwComSjcllistForm listForm : sjclList) {
            for (YwComSjclForm tplForm : sjclTpl) {
                if (tplForm.getTplid() != null && listForm.getId().longValue() == tplForm.getTplid().longValue()) {
                	if (StringUtils.isNotBlank(tplForm.getFilepath())) {
                		int i = 0;
                		if(slclMap.get(listForm.getTitle())!=null){
                			i = slclMap.get(listForm.getTitle())+1;
                		}else{
                			i = 1;
                		}
                		slclMap.put(listForm.getTitle(), i);
                	}
                }
            }
        }
        Set<String> key = slclMap.keySet();
        for (Iterator<String> it = key.iterator(); it.hasNext();) {
            String s =  it.next();
            if(first == false){
	            slzlqd = slzlqd + "\r\n" + s+slclMap.get(s)+"份";
            }else{
	            slzlqd = s+slclMap.get(s)+"份";
	            first  = false ;
            }
        }
        log.info(slzlqd);
		return slzlqd;
	}
	/**
	 * 获取办理结果和办理结果描述
	 * @param templateCode
	 * @param masterEntityKey
	 * @param ywPrintDocService
	 * @return
	 */
	public static Map<String,String> getBljgAndBljgms(String templateCode,String masterEntityKey,IYwPrintDocService ywPrintDocService){
		Map<String,String> bljgAndBljgmsMap = new HashMap<String,String>();
		List<YwPrintDocForm> pList = ywPrintDocService.getNoFcode(templateCode, Long.parseLong(masterEntityKey));
		Boolean iszhunyu = false;
		Boolean isbuzheng = false;
		Boolean isbuzhunyu = false;
		String bljgms = "办结（除以上所述情况外的办结)";
		String bljg = "6";
		if(pList!=null && pList.size()>0){
			for(Iterator<YwPrintDocForm> i = pList.iterator(); i.hasNext();){
				YwPrintDocForm printDoc = i.next();
				if(printDoc.getFileCode().equals("zyxzxkjds")){
					iszhunyu = true;
				}else if(printDoc.getFileCode().equals("byxkjds")){
					isbuzhunyu = true;
				}else if(printDoc.getFileCode().equals("bzcltzs")){
					isbuzheng = true;
				}
			}
		}else {
			log.info("templateCode "+templateCode+"masterEntityKey"+masterEntityKey);
		}
		if(iszhunyu){
			bljg = "0";
			bljgms ="出证办结（正常产生证照、批文的办结）";
		}else if(isbuzheng){
			bljg = "5";
			bljgms ="补交不来办结（指出现补交告知时，通知之后，申请人长期不来补交材料的办结";
		}else if(isbuzhunyu){
			bljg = "6";
			bljgms ="办结（除以上所述情况外的办结)";
		}
		bljgAndBljgmsMap.put("bljg", bljg);
		bljgAndBljgmsMap.put("bljgms", bljgms);
		return bljgAndBljgmsMap;
	}
	/**
	 * 判断90、91的WebLogic是否启动
	 * @return
	 */
	public static boolean ifActivities(String ip,String prot){
		boolean flag = false;
        try {
            Socket socket = new Socket(ip , Integer.parseInt(prot));
            flag = socket.isConnected();
            socket.close();
        } catch (ConnectException e) {
//        	e.printStackTrace();
            log.error(ip + " :  WebLogic has stop"+e);
        } catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
           
        if (flag) {
        	log.info(ip + " :  WebLogic is running");
        } else {
        	log.info(ip + " :  WebLogic has stop");
        }
        return flag;
	}
}
